package cn.lg.soar.mvc.manager;

import cn.lg.soar.common.util.data.DataUtil;

import java.util.Collection;

/**
 * @author luguoxiang 469599794@qq.com
 * @Date: 2023/11/24 11:10
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface IClientNoticeService {

    String JOIN = "::";

    /**
     * 给指定用户发消息
     * @param topic 消息主题
     * @param message 消息内容
     * @param userIds
     * @return 返回成功的userId
     */
    Collection<Long> sendMsgByUser(String topic, String message, Collection<Long> userIds);

    /**
     * 给指定用户发消息
     * @param topic 消息主题
     * @param message 消息内容
     * @param userIds
     * @return 返回成功的userId
     */
    default Collection<Long> sendMsgByUser(String topic, String message, Long ...userIds) {
        return sendMsgByUser(topic, message, DataUtil.arrayToList(userIds));
    }

    /**
     * 发送消息
     * @param topic
     * @param message
     * @param clientId
     * @return
     */
    boolean  sendMsgByClient(String topic, String message, String clientId);

    /**
     * 广播消息(给所有在线用户发送消息)
     * @param topic 消息主题
     * @param message 消息内容
     * @return 返回成功的userId
     */
    Collection<Long> sendMsgAll(String topic, String message);

}
